import Vue from 'vue'
import Vuex from 'vuex'
import createLogger from 'vuex/dist/logger';
import createPersistedState from "vuex-persistedstate";
import { Toast } from 'vant';
import { Dialog } from 'vant';

//* 获取到服务器收藏列表 加入到 vuex 的数据中
import { favlist_list } from "../axios/api";

//* 连接服务器收藏接口 加入到vuex 的数据中
import { fav_login } from "../axios/api";

//* 连接服务器取消收藏接口 取消收藏某个店铺
import { unfav_login } from "../axios/api";

//* 加入购物车
import { shopcart_list } from "../axios/api";

//* 清空购物车
import { clear_login } from "../axios/api";

//* 购物车数量加 1
import { add_login } from "../axios/api";

//* 购物车数量减1
import { sub_login } from "../axios/api";



Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 服务器商品收藏列表数据
    shopData: [],
    // 购物车渲染
    shopcarDatatata: [],
  },
  getters: {

  },
  mutations: {
    // 获取到服务器收藏列表 加入到 vuex 的数据中
    push_shopData(state, value) {
      state.shopData = value
    },

    // 连接服务器收藏接口 加入到vuex 的数据中
    new_shopData(state, value) {
      state.shopData.push(value)
    },

    // 连接服务器取消收藏接口 取消收藏某个店铺
    clear_shopData(state, value) {
      let clear_shoucang = state.shopData.findIndex((item) => {
        return item.mtWmPoiId == value.mtWmPoiId
      });
      if (clear_shoucang != -1) {
        state.shopData.splice(clear_shoucang, 1)
      }

    },

    push_shopcart(state, value) {
      state.shopcarDatatata = value
    },

    // 购物车商品数量加 1
    shopcart(state, value) {
      state.shopcarDatatata.push(value)
    },

    // 购物车商品数量减 1
    jian_shopcart(state, params) { //数量减1
      //需要判断 商品是否已经加入购物车
      var index = state.shopcarDatatata.findIndex((item) => {
        return item.id == params.id;
      })

      if (index != -1) { //如果条件成立, 说明 商品已经加入购物车
        if (state.shopcarDatatata[index].count > 1) { //如果商品数量大于1, 数量减1
          state.shopcarDatatata[index].count--;
        } else { //商品数量小于等于1, 从购物车删除该商品
          state.shopcarDatatata.splice(index, 1);
        }
      }
    },

    // 清空购物车中的商品1
    clear_shangpin(state) {
      state.shopcarDatatata = []
    }
  },
  actions: {

    // 获取到服务器收藏列表 加入到 vuex 的数据中
    favlist({ commit }) {
      let username = JSON.parse(localStorage.getItem('userinfo')).id
      favlist_list({ userid: username }).then(
        response => {
          if (response.data.code == 200) {
            Toast.clear()
            commit('push_shopData', response.data.list)
          }
        }
      )
    },

    // 连接服务器收藏接口 加入到vuex 的数据中
    push_shopdata({ commit }, value) {
      let username = JSON.parse(localStorage.getItem('userinfo')).id

      fav_login({ userid: username, shopid: value.mtWmPoiId }).then(
        response => {
          if (response.data.code == 200) {
            Toast.clear();
            Toast.success('添加到收藏')
            commit('new_shopData', value)
            // console.log(response.data)11;
          }
        }
      )
    },

    // 连接服务器取消收藏接口 取消收藏某个店铺
    pop_shopdata({ commit }, value) {
      let username = JSON.parse(localStorage.getItem('userinfo')).id

      unfav_login({ userid: username, shopid: value.mtWmPoiId }).then(
        response => {
          if (response.data.code == 200) {
            Toast.clear();
            Toast.success('取消收藏成功')
            commit('clear_shopData', value)
            // console.log(response.data);
          }
        }
      )
    },

    // 购物车列表数据
    shopcart({ commit }) {
      let userid = JSON.parse(localStorage.getItem('userinfo')).id

      shopcart_list({ userid }).then(
        response => {
          if (response.data.code == 200) {
            Toast.clear();
            commit('push_shopcart', response.data.list)
          }
        }
      ),
        console.log();
    },

    // 清空购物车
    clear({ commit }) {
      let userid = JSON.parse(localStorage.getItem('userinfo')).id

      clear_login({ userid: userid }).then(
        response => {
          Dialog.confirm({
            title: '清空',
            message: '确定要清空购物车吗？',
          }).then(() => {
            Toast.clear();
            Toast.success('已清空')
            commit('clear_shangpin')
          }).catch(() => {
            Toast.clear();
          });
          // if (response.data.code == 200) {
          //   Toast.clear();
          //   Toast.success('已清空')
          //   commit('clear_shangpin')
          // }
        }
      )
    },

    // 购物车数量加 1
    add({ commit }, value) {
      let username = JSON.parse(localStorage.getItem('userinfo')).id

      add_login({ userid: username, goodid: value.id }).then(
        response => {
          if (response.data.code == 200) {
            Toast.clear();
            Toast.success('添加成功')
            commit('shopcart', value)
            // console.log(response.data);
          }
        }
      )
    },

    // 购物车数量减 1
    sub({ commit }, value) {
      let username = JSON.parse(localStorage.getItem('userinfo')).id

      sub_login({ userid: username, goodid: value.id }).then(
        response => {
          Dialog.confirm({
            title: '删除商品',
            message: '删除后商品会消失，确定要清除吗？',
          }).then(() => {
            commit('jian_shopcart', value)
            Toast.clear();
            console.log(response.data);
          }).catch(() => {
            Toast.clear();
          });
          // if (response.data.code == 200) {
          // }
        }
      )
    }
  },
  modules: {
  },
  // state 数据变动控制台提示     将 state 的数据存储在本地存储 
  plugins: [createLogger(), createPersistedState()]
})
